package tubesrus.beans;

import java.util.ArrayList;
import java.util.Calendar;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

@Stateless
public class myStateless {

	@PersistenceContext
	private EntityManager em;

	public void creerUtilisateur(String id, String email, String pass, String sexe, String nom, String prenom) {
		Utilisateur u = new Utilisateur();
		u.setId(id);
		u.setEmail(email);
		u.setPassword(pass);
		u.setSexe((nom == null)?"G":sexe);
		if(nom != null) u.setNom(nom);
		if(prenom != null) u.setPrenom(prenom);
		em.persist(u);
	}


	public void creerVideo(String url, String titre, String auteur, Integer prix) {
		Video v = new Video();
		v.setUrl(url);
		v.setTitre(titre);
		v.setAuteur(auteur);
		v.setPrix(prix);
		v.setTitre(url);
		em.persist(v);
	}
	
	public void creerCommentaire(String texte, String user, String videoId) {
		Commentaire c = new Commentaire();
		c.setDate(Calendar.getInstance());
		c.setTexte(texte);
		c.setUser(user);
		c.setVideoId("0");
		em.persist(c);
	}
	
	
	public void update(String id, String champs, String newVal) {
		
		Utilisateur u = em.find(Utilisateur.class, id);
		
		if(champs.equals("statut")) {
			u.setStatut(newVal);
		}
		else if(champs.equals("prenom")) {
			u.setPrenom(newVal);
		}
		else if(champs.equals("nom")) {
			u.setNom(newVal);
		}
		else if(champs.equals("email")) {
			u.setEmail(newVal);
		}
		else if(champs.equals("urlavatar")) {
			u.setUrlAvatar(newVal);
		}
		else if(champs.equals("vidz")) {
			u.setVidz(Integer.parseInt(newVal));
			em.merge(u);
		}
		
		em.merge(u);
		
		//Query q = em.createQuery("UPDATE Utilisateur SET STATUT = 'utilisateur' WHERE ID = '"+id+"'");
		//return q.executeUpdate();
	}
	
	public Utilisateur findByUid ( String userId ) {
		return (Utilisateur)em.find(tubesrus.beans.Utilisateur.class, userId);
	}
	
	public Utilisateur findByName ( String id ) {
		return (Utilisateur)em.createQuery("select e from Utilisateur e where e.nom='"+id+"'").getSingleResult();
	}

	@SuppressWarnings("unchecked")
	public ArrayList<Utilisateur> getUtilisateurs() {
		return (ArrayList<Utilisateur>) em.createQuery("select u from Utilisateur u").getResultList();
	}

	@SuppressWarnings("unchecked")
	public ArrayList<Commentaire> getCommentaires(String id) {
		return (ArrayList<Commentaire>)em.createQuery("select c from Commentaire c where c.videoid='"+id+"'").getResultList();
	}

	@SuppressWarnings("unchecked")
	public ArrayList<Video> getVideos() {
		return (ArrayList<Video>) em.createQuery("select v from Video v").getResultList();
	}
	
	public Video getVideo(Long l) {
		return (Video) em.createQuery("select v from Video v where v.id ="+l).getSingleResult();
	}


	public Utilisateur addVideoToUser(String id, Long id_video) {
		Utilisateur u = em.find(Utilisateur.class, id);
		u.addVideoPayee(id_video);
		em.merge(u);
		return u;
	}
	
}